//
//  RSEmotionToolBarView.swift
//  RSWeibo
//
//  Created by Macx on 16/8/20.
//  Copyright © 2016年 Macx. All rights reserved.
//

import UIKit

// 定义一个按钮类型的枚举
enum RSEmotionButtonType: Int {

    case Normal = 0
    
    case Emoji = 1
    
    case LXH = 2
}

class RSEmotionToolBarView: UIStackView {
    
    // 定义一个跟随按钮的闭包, 用作点击按钮传递参数(有参无返回值)
    var didselectedEmotionToolBarBtnClosure: ((type: RSEmotionButtonType)->())?
    
    
    // 定义一个全局变量, 用来记录被点击选中的按钮
    var selectedBtn: UIButton?
    
    override init(frame: CGRect) {
        super.init(frame: frame)
        
        setuoUI()
        
    }
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    

    private func setuoUI(){
        
        // 设置成水平布局
        axis = .Horizontal

        // 等比填充
        distribution = .FillEqually
        
        // 创建三个按钮
        
        creatChildButton("默认", imageNomal: "compose_emotion_table_left_normal", imageHighlighted: "compose_emotion_table_left_selected", Type: .Normal)
        creatChildButton("Emoji", imageNomal: "compose_emotion_table_mid_normal", imageHighlighted: "compose_emotion_table_mid_selected", Type: .Emoji)
        creatChildButton("浪小花", imageNomal: "compose_emotion_table_right_normal", imageHighlighted: "compose_emotion_table_right_selected", Type: .LXH)
        
        
    }
    
    // 封装一个创建按钮的方法
    private func creatChildButton(title: String, imageNomal: String, imageHighlighted: String, Type: RSEmotionButtonType){
    
        let btn = UIButton()
        
        // 从枚举的类型中取出原始值, 赋给按钮的tag
        btn.tag = Type.rawValue
        
        // 添加点击事件
        btn.addTarget(self, action: "didselectedEmotionBtn:", forControlEvents: .TouchUpInside)
        
        // 设置按钮不同状态的颜色
        btn.setTitle(title, forState: .Normal)
        btn.setTitleColor(UIColor.whiteColor(), forState: .Normal)
        btn.setTitleColor(UIColor.grayColor(), forState: .Selected)
        
        // 设置不同状态下的背景图片
        btn.setBackgroundImage(UIImage(named: imageNomal), forState: .Normal)
        btn.setBackgroundImage(UIImage(named: imageHighlighted), forState: .Selected)
        
        // 字体大小
        btn.titleLabel?.font = UIFont.systemFontOfSize(14)
        
        // 添加到stackview 的按钮队列中
        addArrangedSubview(btn)
    }
    
    // 点击按钮的方法
    @objc private func didselectedEmotionBtn(emotionButton: UIButton){
        
        // 把上一次被选中的按钮的选中状态取消
        selectedBtn?.selected = false
    
        // 记录下本次被点击选中的按钮, 同时修改成被选中状态
        selectedBtn = emotionButton
        selectedBtn?.selected = true
        
        // 先从按钮中携带的tag取出本次所点击的按钮的类型, 然后作为参数, 传递给执行的闭包
        let type = RSEmotionButtonType(rawValue: emotionButton.tag)!
        // 执行闭包(?是用来判断闭包是否有值, 有值的话就执行,没有值的话就不执行, 比较安全)
        didselectedEmotionToolBarBtnClosure?(type: type)
    
    }

        
}
